
DROP TABLE CLIENTES;
CREATE TABLE CLIENTES ( 
  DNI VARCHAR2(8) NOT NULL PRIMARY KEY,
  NOMBRE VARCHAR2(15)NOT NULL,
  APELLIDO VARCHAR2(15)NOT NULL,
  DIRECCION VARCHAR2(40)NOT NULL,
  EMAIL VARCHAR2(40),
  CLAVE VARCHAR2(4) NOT NULL); /*CLAVE PARA ENTRAR CON EL DNI A REALIZAR ACCIONES*/
INSERT INTO CLIENTES ("DNI", "NOMBRE", "APELLIDO", "DIRECCION", "EMAIL", "CLAVE") VALUES ('30462661', 'JO', 'RA', 'IN', 'OSEJU', 'JS');

DROP TABLE CUENTAS;  
CREATE TABLE CUENTAS (
  NRO_CUENTA VARCHAR2(20)NOT NULL PRIMARY KEY,
  DNI VARCHAR2(8)NOT NULL REFERENCES CLIENTES(DNI), /*CREAR CLAVE FORANEA QUE APUNTE AL CAMPO DNI DE LA TABLA CLIENTE*/
  TIPO_CTA VARCHAR2(2)NOT NULL, /*(CC - CA)*/
  ESTADO VARCHAR2(3)NOT NULL, /*(HAB - INA)*/
  SALDO NUMBER(16,2) NOT NULL,
  DESCUBIERTO NUMBER(16,2) NOT NULL);
INSERT INTO CUENTAS ("NRO_CUENTA", "DNI", "TIPO_CTA", "ESTADO", "SALDO", "DESCUBIERTO") VALUES ('20', '30462661', 'CC', 'HAB', '13', '15'); 
  
  DROP TABLE MOVIMIENTOS;
CREATE TABLE MOVIMIENTOS (
  ID_MOV NUMBER NOT NULL PRIMARY KEY, /*VER COMO CREAR LA SECUENCIA PARA HACER EL CAMPO AUTONUMERICO*/
  NRO_CUENTA VARCHAR2(20),
  FECHA DATE NOT NULL,
  TIPO_MOV VARCHAR2(3) NOT NULL, /*(EXT - DEP)*/
  ORIGEN VARCHAR2(3)NOT NULL, /*(CAJ - TRA - SER - PRE - PFJ)*/
  SALDO_ACTUAL NUMBER(16,2) NOT NULL, /*SALDO ANTERIOR AL MOVIMIENTO*/
  MONTO_MOV NUMBER(16,2)NOT NULL);

DROP SEQUENCE MOVIMIENTOS_ID;
CREATE SEQUENCE MOVIMIENTOS_ID /* EJ DE USO: INSERT INTO MOVIMIENTOS VALUES (MOVIMIENTOS_ID.NEXTVAL, '20','1'); */
INCREMENT BY 1
START WITH 1
NOCYCLE
CACHE 20;

DROP TABLE PLAZO_FIJO;  
CREATE TABLE PLAZO_FIJO (
  ID_PFJ NUMBER NOT NULL PRIMARY KEY, /*VER COMO CREAR LA SECUENCIA PARA HACER EL CAMPO AUTONUMERICO*/
  DNI VARCHAR2(8) NOT NULL REFERENCES CLIENTES(DNI), /*CREAR CLAVE FORANEA QUE APUNTE AL CAMPO DNI DE LA TABLA CLIENTE*/
  ID_MOV NUMBER, /*SOLO SE USA SI SE TIENE UNA CUENTA*/
  FECHA_ALTA DATE NOT NULL,
  FECHA_VENCIMIENTO DATE NOT NULL,
  ORIGEN VARCHAR2(3) NOT NULL, /*(EFE - CTA)*/
  NRO_CTA_ORIGEN VARCHAR2(20),
  ACREDITACION VARCHAR2(3), /*(CTA - CJA)*/
  NRO_CTA_DESTINO VARCHAR2(20),
  MONTO NUMBER(16,2),
  INTERES VARCHAR2(3));

CREATE SEQUENCE PLAZO_FIJO_ID
INCREMENT BY 1
START WITH 1
NOCYCLE
CACHE 20;
  
  DROP TABLE TRANSFERENCIAS;
CREATE TABLE TRANSFERENCIAS(
  ID_MOV NUMBER NOT NULL REFERENCES MOVIMIENTOS(ID_MOV) PRIMARY KEY, /*CLAVE FORANEA QUE APUNTE AL ID_MOV DE LA TABLA MOVIMIENTOS*/
  NRO_CTA_ORIGEN VARCHAR2(20) NOT NULL REFERENCES CUENTAS(NRO_CUENTA), /*CLAVE FORANEA QUE APUNTE A NRO_CUENTA DE LA TABLA CUENTAS*/
  NRO_CTA_DESTINO VARCHAR2(20) NOT NULL REFERENCES CUENTAS(NRO_CUENTA)); /*CLAVE FORANEA QUE APUNTE A NRO_CUENTA DE LA TABLA CUENTAS*/

DROP TABLE SERVICIOS;
CREATE TABLE SERVICIOS(
  ID_SERV VARCHAR2(3) NOT NULL PRIMARY KEY, /*SECUENCIA*/
  DESCRIPCION VARCHAR2(15) NOT NULL,
  MONTO_FIJO NUMBER(16,2));

CREATE SEQUENCE SERVICIOS_ID
INCREMENT BY 1
START WITH 1
NOCYCLE
CACHE 20;

DROP TABLE PRESTAMOS;

CREATE TABLE PRESTAMOS(
  ID_PRESTAMO NUMBER NOT NULL PRIMARY KEY, /*CREAR SECUENCIA*/
  DNI VARCHAR2(8) NOT NULL REFERENCES CLIENTES(DNI), /*CLAVE FORANEA CON DNI TABLA CLIENTE*/
  NRO_CUENTA VARCHAR2(20),
  FECHA_ALTA DATE NOT NULL,
  MONTO NUMBER(16,2) NOT NULL,
  CANT_CUOTAS VARCHAR2(3) NOT NULL,
  INTERES VARCHAR2(3) NOT NULL);

CREATE SEQUENCE PRESTAMOS_ID
INCREMENT BY 1
START WITH 1
NOCYCLE
CACHE 20;

DROP TABLE PAGO_SERVICIOS;
CREATE TABLE PAGO_SERVICIOS(
  ID_MOV NUMBER NOT NULL PRIMARY KEY REFERENCES MOVIMIENTOS(ID_MOV), /*CLAVE FORANEA CON MOVIMIENTOS*/
  ID_SERV VARCHAR(3) NOT NULL REFERENCES SERVICIOS(ID_SERV), /*CLAVE FORANEA CON SERVICIOS*/
  FECHA DATE NOT NULL,
  NRO_CUENTA VARCHAR2(20) NOT NULL REFERENCES CUENTAS(NRO_CUENTA)); /*CLAVE FORANEA CON CUENTAS*/

DROP TABLE PAGO_PRESTAMOS;
CREATE TABLE PAGO_PRESTAMOS(
  ID_PAGO NUMBER NOT NULL PRIMARY KEY, /*SECUENCIA*/
  ID_PRESTAMO NUMBER NOT NULL REFERENCES PRESTAMOS(ID_PRESTAMO), /*CLAVE FORANEA CON PRESTAMOS*/
  ID_MOV NUMBER,
  FECHA_PAGO DATE,
  ORIGEN VARCHAR2(3) NOT NULL, /*(EFE - CTA)*/
  NRO_CUENTA VARCHAR2(20));

CREATE SEQUENCE PAGO_PRESTAMOS_ID
INCREMENT BY 1
START WITH 1
NOCYCLE
CACHE 20;

CREATE SEQUENCE S_CUENTAS
INCREMENT BY 1
START WITH 1
NOCYCLE
CACHE 20;
